home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / lib / partman / display.d / 10initial_auto next >
Text File  |  2008-10-29  |  3KB  |  140 lines

  1. #!/bin/sh
  2.  
  3. . /lib/partman/lib/base.sh
  4.  
  5. # Only run the first time
  6. if [ -f /var/lib/partman/initial_auto ]; then
  7.     exit 0
  8. fi
  9.  
  10. . /lib/partman/lib/auto-shared.sh
  11.  
  12. dev_to_partman () {
  13.     local dev_name="$1"
  14.  
  15.     local mapped_dev_name="$(mapdevfs $dev_name)"
  16.     if [ -n "$mapped_dev_name" ]; then
  17.         dev_name="$mapped_dev_name"
  18.     fi
  19.  
  20.     for dev in $DEVICES/*; do
  21.         [ -d "$dev" ] || continue
  22.  
  23.         # mapdevfs both to allow for different ways to refer to the
  24.         # same device using devfs, and to allow user input in
  25.         # non-devfs form
  26.         if [ "$(mapdevfs $(cat $dev/device))" = "$dev_name" ]; then
  27.             echo $dev
  28.         fi
  29.     done
  30. }
  31.  
  32. # Skip if no disks detected and don't run on S/390
  33. if [ -z "$(get_auto_disks)" ] || \
  34.    [ "$(udpkg --print-architecture)" = s390 ]; then
  35.     exit 0
  36. fi
  37.  
  38. mkdir -p /var/lib/partman
  39. touch /var/lib/partman/initial_auto
  40.  
  41. # See if any autopartition method has been set
  42. method=""
  43. if db_get partman-auto/method && [ "$RET" ]; then
  44.     method="$RET"
  45. fi
  46.  
  47. # See if any autopartition disks have been set
  48. disks=""
  49. if db_get partman-auto/disk && [ "$RET" ]; then
  50.     disks="$RET"
  51. fi
  52.  
  53. # If there's only one disk, then preseeding partman-auto/disk is
  54. # unnecessary, and sometimes inconvenient in heterogeneous environments
  55. if [ "$method" ] && [ -z "$disks" ]; then
  56.     DEVS="$(get_auto_disks)"
  57.     if [ "$(echo "$DEVS" | wc -l)" -eq 1 ]; then
  58.         disks="$(cat "${DEVS%$TAB*}"/device)"
  59.     fi
  60. fi
  61.  
  62. # If both are set, let's try to do a completely automatic partitioning
  63. if [ "$method" ] && [ "$disks" ]; then
  64.     # The code for the methods could be merged, but in the future non-regular
  65.     # methods may support multiple disks
  66.     case "$method" in
  67.         regular)
  68.         for disk in $disks; do
  69.             id=$(dev_to_partman "$disk") || true
  70.             if [ "$id" ]; then
  71.                 autopartition "$id"
  72.                 exit 0
  73.             fi
  74.         done
  75.         exit 1
  76.         ;;
  77.         lvm)
  78.         search-path autopartition-lvm || exit 1
  79.         for disk in $disks; do
  80.             id=$(dev_to_partman "$disk") || true
  81.             if [ "$id" ]; then
  82.                 autopartition-lvm "$id"
  83.                 exit 0
  84.             fi
  85.         done
  86.         exit 1
  87.         ;;
  88.         crypto)
  89.         search-path autopartition-crypto || exit 1
  90.         for disk in $disks; do
  91.             id=$(dev_to_partman "$disk") || true
  92.             if [ "$id" ]; then
  93.                 autopartition-crypto "$id"
  94.                 exit 0
  95.             fi
  96.         done
  97.         exit 1
  98.         ;;
  99.         raid)
  100.         # Partition all the disks given ready for
  101.         # partman-auto-raid
  102.         for disk in $disks; do
  103.             id=$(dev_to_partman "$disk") || true
  104.             if [ "$id" ]; then
  105.                 autopartition "$id"
  106.             fi
  107.         done
  108.         exit 0
  109.         ;;
  110.         loop)
  111.         search-path autopartition-loop || exit 1
  112.         for disk in $disks; do
  113.             id=$(dev_to_partman "$disk") || true
  114.             if [ "$id" ]; then
  115.                 autopartition-loop "$id"
  116.                 exit 0
  117.             fi
  118.         done
  119.         exit 1
  120.         ;;
  121.         *)
  122.         logger -t partman-auto "Unsupported method '$method'"
  123.         exit 1
  124.         ;;
  125.     esac
  126. fi
  127.  
  128. qfile=/lib/partman/automatically_partition/question
  129. echo "partman-auto/init_automatically_partition" >$qfile
  130. code=99 # signals a retry
  131. while [ $code = 99 ]; do
  132.     ask_user /lib/partman/automatically_partition
  133.     code=$?
  134. done
  135. if [ $code -gt 0 ] && [ $code -lt 100 ]; then
  136.     rm -f /var/lib/partman/initial_auto # try again
  137. fi
  138. echo "partman-auto/automatically_partition" >$qfile
  139. exit $code
  140.